home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PPC1B3AA.ZIP / PAGEEDIT.PPS < prev    next >
Text File  |  1996-08-29  |  11KB  |  394 lines

  1. ;----------------------------------------------------------------------------
  2. ; Copyright(C) 1996, The AEGiS Corporation
  3. ;----------------------------------------------------------------------------
  4. ;
  5. ; PROCEDURE PageEdit()
  6. ;
  7. ; Full screen ansi page editor.
  8. ; Call PageEdit with the name of the page to be edited as parameter
  9. ;
  10. ; Note: PAGEEDIT.CFG & PAGEEDIT.PCB must be distributed along with your
  11. ; application.
  12. ;
  13. ;----------------------------------------------------------------------------
  14. #lib
  15. #nouser
  16. ;----------------------------------------------------------------------------
  17. Declare Procedure PE_DispSel(Integer Seln)
  18. Declare Procedure PE_EraseSel(Integer Seln)
  19. Declare Procedure PE_RemoveCursor()
  20. Declare Procedure PE_Menu(String PageName)
  21. Declare Procedure PE_DispCurColor()
  22. Declare Procedure PE_EraseCurColor()
  23. Declare Procedure PageEdit(String PageName)
  24. ;----------------------------------------------------------------------------
  25.  
  26. Boolean PE_Quit
  27. Boolean PE_InMenu
  28. Boolean PE_Changed
  29. String PE_Inverse, PE_Normale
  30. Integer PE_CurCol,PE_BakColor
  31. Integer PE_Sel
  32. BigStr PE_k
  33. String PE_ColorLeftSeparator, PE_ColorRightSeparator
  34. String PE_SavedString,NoChangeString
  35.  
  36. Procedure PageEdit(String PageName)
  37.  
  38. Integer CurX, CurY
  39. BigStr TopLine
  40. BigStr EscToCommand, EscToResume
  41. Integer EscToCommandX
  42. Integer EscToResumeX
  43. Integer a,b,c
  44. String CfgFile
  45.  
  46. CfgFile = PPEPath() + "PAGEEDIT.CFG"
  47.  
  48. EscToCommand = ReadLine(CfgFile, 1)
  49. EscToCommandX = ToInt(ReadLine(CfgFile, 2))
  50. EscToResume = ReadLine(CfgFile, 3)
  51. EscToResumeX = ToInt(ReadLine(CfgFile, 4))
  52. PE_ColorLeftSeparator = ReadLine(CfgFile, 5)
  53. PE_ColorRightSeparator = ReadLine(CfgFile, 6)
  54. PE_SavedString = ReadLine(CfgFile,7)
  55. NoChangeString = ReadLine(CfgFile,8)
  56. PE_Normale = ReadLine(CfgFile, 9)
  57. PE_Inverse = ReadLine(CfgFile, 10)
  58. Fclose -1
  59.  
  60. StartDisp FNS
  61. Color 15
  62. Cls
  63.  
  64. CurX = 1
  65. CurY = 2
  66.  
  67. If (Exist(PageName)) Then
  68.     Fopen 1, PageName, O_RD, S_DN
  69.     DispFile PPEPath() + "PAGEEDIT.PCB", DEFS
  70.     TopLine = ScrText(1,1,80,True)
  71.     AnsiPos EscToCommandX,1
  72.     Print EscToCommand
  73.     For a = 2 to 20
  74.         AnsiPos 1,a
  75.         FGet 1,PE_k
  76.         Print PE_k
  77.     Next
  78.     FClose 1
  79. Else
  80.     DispFile PPEPath() + "PAGEEDIT.PCB", DEFS
  81.     TopLine = ScrText(1,1,80,True)
  82.     AnsiPos EscToCommandX,1
  83.     Print EscToCommand
  84. Endif
  85.  
  86. PE_CurCol = 15
  87. PE_DispCurColor()
  88. Color PE_CurCol
  89.  
  90. AnsiPos CurX,CurY
  91.  
  92. While (1) Do
  93.     PE_k = Inkey()
  94.     If (PE_k <> "") Then
  95. :tkt
  96.         Select case PE_k
  97.             Case "RIGHT"
  98.                 Inc CurX
  99.                 If (CurX > 80) then
  100.                     CurX = 1
  101.                     PE_k = "DOWN"
  102.                     Goto tkt
  103.                 Endif
  104.                 AnsiPos CurX,CurY
  105.             Case "LEFT"
  106.                 Dec CurX
  107.                 If (CurX = 0) Then
  108.                     CurX = 80
  109.                     PE_k = "UP"
  110.                     Goto tkt
  111.                 Endif
  112.                 AnsiPos CurX,CurY
  113.             Case "UP"
  114.                 Dec CurY
  115.                 If (CurY = 1) CurY = 20
  116.                 AnsiPos CurX,CurY
  117.             Case "DOWN"
  118.                 Inc CurY
  119.                 If (CurY = 21) CurY = 2
  120.                 AnsiPos CurX,CurY
  121.             Case "END"
  122.                 CurX = 80
  123.                 AnsiPos CurX,CurY
  124.             Case "HOME"
  125.                 CurX = 1
  126.                 AnsiPos CurX,CurY
  127.             Case "CTRL END"
  128.                 CurX = len(RTrim(ScrText(1,CurY,80,False)," "))
  129.                 If (CurX < 80) Inc CurX
  130.                 AnsiPos CurX,CurY
  131.             Case "CTRL HOME"
  132.                 CurX = Len(ScrText(1,CurY,80,False)) - Len(Ltrim(ScrText(1,CurY,80,False)," "))
  133.                 Inc CurX
  134.                 AnsiPos CurX,CurY
  135.             Case "CTRL PGDN"
  136.                 CurY = 20
  137.                 AnsiPos CurX,CurY
  138.             Case "CTRL PGUP"
  139.                 CurY = 2
  140.                 AnsiPos CurX,CurY
  141.             Case ""
  142.                 PE_Changed = True
  143.                 If (CurX > 1) Then
  144.                     Dec CurX
  145.                     AnsiPos CurX, CurY
  146.                     Print ScrText(CurX + 1, CurY, 80-CurX+1,True)+" "
  147.                     AnsiPos CurX, CurY
  148.                     Color PE_CurCol
  149.                 Else
  150.                     Dec CurY
  151.                     If (CurY = 1) CurY = 20
  152.                     PE_k = "CTRL END"
  153.                     Goto tkt
  154.                 Endif
  155.             Case "DEL", "CTRL LEFT"
  156.                 Print ScrText(CurX + 1, CurY, 80-CurX+1,True)+" "
  157.                 AnsiPos CurX, CurY
  158.                 Color PE_CurCol
  159.                 PE_Changed = True
  160.             Case "CTRL RIGHT"
  161.                 If (CurX < 80) Then
  162.                     Print " "+ScrText(CurX, CurY, 80-CurX,True)
  163.                     AnsiPos CurX, CurY
  164.                     Color PE_CurCol
  165.                     PE_Changed = True
  166.                 Endif
  167.             Case Chr(9)
  168.                 For a = 20 To CurY+1 Step -1
  169.                     AnsiPos 1, a
  170.                     Print ScrText(1,a-1,80,TRUE)
  171.                 Next
  172.                 AnsiPos 1, CurY
  173.                 Print Space(80)
  174.                 CurX = 1
  175.                 AnsiPos CurX, CurY
  176.                 Color PE_CurCol
  177.                 PE_Changed = True
  178.             Case ""
  179.                 For a = CurY+1 to 20
  180.                     AnsiPos 1,a-1
  181.                     Print ScrText(1,a,80,TRUE)
  182.                 Next
  183.                 AnsiPos 1, 20
  184.                 Print Space(80)
  185.                 CurX = 1
  186.                 AnsiPos CurX, CurY
  187.                 Color PE_CurCol
  188.                 PE_Changed = True
  189.             Case Chr(27)
  190.                 AnsiPos 1,1
  191.                 Print TopLine
  192.                 AnsiPos EscToCommandX,1
  193.                 Print EscToResume
  194.                 PE_Menu(PageName)
  195.                 If (PE_Quit) Break
  196.                 AnsiPos 1,1
  197.                 Print TopLine
  198.                 AnsiPos EscToCommandX,1
  199.                 Print EscToCommand
  200.                 AnsiPos CurX,CurY
  201.                 Color PE_CurCol
  202.             Case Chr(13)
  203.                 CurX = 1
  204.                 PE_k = "DOWN"
  205.                 Goto tkt
  206.             Case Else
  207.                 If (len(PE_k) = 1) Then
  208.                     PE_Changed = True
  209.                     Print PE_k
  210.                     PE_k = "RIGHT"
  211.                     goto tkt
  212.                 Endif
  213.         End Select
  214.     EndIf
  215. EndWhile
  216.  
  217. EndProc
  218. ;----------------------------------------------------------------------------
  219. Procedure PE_DispSel(Integer Seln)
  220. AnsiPos 34+(Seln-1)*15,22
  221. Print PE_Inverse,ScrText(34+(Seln-1)*15,22,15,False)
  222. PE_RemoveCursor()
  223. Endproc
  224. ;----------------------------------------------------------------------------
  225. Procedure PE_EraseSel(Integer Seln)
  226. AnsiPos 34+(Seln-1)*15,22
  227. Print PE_Normale,ScrText(34+(Seln-1)*15,22,15,False)
  228. PE_RemoveCursor()
  229. Endproc
  230. ;----------------------------------------------------------------------------
  231. Procedure PE_RemoveCursor()
  232. AnsiPos 1,22
  233. Color 0
  234. Print " "
  235. Backup 1
  236. EndProc
  237. ;----------------------------------------------------------------------------
  238. Procedure PE_Menu(String PageName)
  239. Int A
  240.  
  241. PE_InMenu = True
  242. PE_BakColor = PE_CurCol
  243. PE_Sel = 16 - PE_CurCol
  244. PE_DispCurColor()
  245. PE_RemoveCursor()
  246.  
  247. While (1) Do
  248.     PE_k = Inkey()
  249.     If (PE_k <> "") Then
  250.         Select case PE_k
  251.             Case "RIGHT"
  252.                 If (PE_Sel > 15) Then
  253.                     PE_EraseSel(PE_Sel-15)
  254.                     PE_Sel = PE_Sel + 1
  255.                     If (PE_Sel = 19) Then
  256.                         PE_Sel = 1
  257.                         PE_CurCol = 15
  258.                         PE_DispCurColor()
  259.                     Else
  260.                         PE_DispSel(PE_Sel-15)
  261.                     Endif
  262.                 Else
  263.                     PE_EraseCurColor()
  264.                     Inc PE_Sel
  265.                     If (PE_Sel > 15) Then
  266.                         PE_DispSel(PE_Sel-15)
  267.                     Else
  268.                         PE_CurCol = 16 - PE_Sel
  269.                         PE_DispCurColor()
  270.                     Endif
  271.                 Endif
  272.             PE_RemoveCursor()
  273.             Case "LEFT"
  274.                 If (PE_Sel > 15) Then
  275.                     PE_EraseSel(PE_Sel-15)
  276.                     PE_Sel = PE_Sel - 1
  277.                     If (PE_Sel = 15) Then
  278.                         PE_CurCol = 1
  279.                         PE_DispCurColor()
  280.                     Else
  281.                         PE_DispSel(PE_Sel-15)
  282.                     Endif
  283.                 Else
  284.                     PE_EraseCurColor()
  285.                     Dec PE_Sel
  286.                     If (PE_Sel = 0) Then
  287.                         PE_Sel = 18
  288.                         PE_DispSel(PE_Sel-15)
  289.                     Else
  290.                         PE_CurCol = 16 - PE_Sel
  291.                         PE_DispCurColor()
  292.                     Endif
  293.                 Endif
  294.             PE_RemoveCursor()
  295.             Case Chr(27)
  296.                 PE_InMenu = False
  297.                 If (PE_Sel > 15) Then
  298.                     PE_EraseSel(PE_Sel-15)
  299.                 Else
  300.                     PE_EraseCurColor()
  301.                 Endif
  302.                 PE_CurCol = PE_BakColor
  303.                 PE_DispCurColor()
  304.                 Break
  305.             Case Chr(13)
  306.                 PE_InMenu = False
  307.                 If (PE_Sel <= 15) Then
  308.                     PE_EraseCurColor()
  309.                     PE_DispCurColor()
  310.                     Color PE_CurCol
  311.                     Break
  312.                 Else
  313.                     PE_EraseSel(PE_Sel-15)
  314.                     If (PE_Sel = 16) Then
  315.                         If (PE_Changed) Then
  316.                             Fcreate 1, PageName, O_WR, S_DN
  317.                             FPutLn 1
  318.                             For a = 2 to 20
  319.                                 FPutLn 1, ScrText(1,a,80, True)
  320.                             Next
  321.                             FClose 1
  322.                             AnsiPos 1, 22
  323.                             Print Space(40-len(stripatx(PE_SavedString))/2)
  324.                             Print PE_SavedString
  325.                             Print Space(80-GetX())
  326.                             AnsiPos 40-len(stripatx(PE_SavedString))/2+Len(Stripatx(PE_SavedString))+1,22
  327.                             Delay 2
  328.                             Backup len(Stripatx(PE_SavedString))
  329.                             Print "@X07" + StripAtx(PE_SavedString)
  330.                             Delay 2
  331.                             Backup len(Stripatx(PE_SavedString))
  332.                             Print "@X08" + StripAtx(PE_SavedString)
  333.                             Delay 2
  334.                             Backup len(Stripatx(PE_SavedString))
  335.                             Print Space(len(Stripatx(PE_SavedString)))
  336.                             PE_RemoveCursor()
  337.                             PE_Quit=True
  338.                             Goto PGend
  339.                         Else
  340.                             :NcS
  341.                             AnsiPos 1, 22
  342.                             Print Space(40-len(stripatx(NoChangeString))/2)
  343.                             Print NoChangeString
  344.                             Print Space(80-GetX())
  345.                             AnsiPos 40-len(stripatx(NoChangeString))/2+Len(Stripatx(NoChangeString))+1,22
  346.                             Delay 2
  347.                             Backup len(Stripatx(NoChangeString))
  348.                             Print "@X07" + StripAtx(NoChangeString)
  349.                             Delay 2
  350.                             Backup len(Stripatx(NoChangeString))
  351.                             Print "@X08" + StripAtx(NoChangeString)
  352.                             Delay 2
  353.                             Backup len(Stripatx(NoChangeString))
  354.                             Print Space(len(Stripatx(NoChangeString)))
  355.                             PE_RemoveCursor()
  356.                             PE_Quit=True
  357.                             Goto PGend
  358.                         Endif
  359.                     ElseIf (PE_Sel = 17) Then
  360.                         PE_EraseCurColor()
  361.                         PE_CurCol = PE_BakColor
  362.                         PE_DispCurColor()
  363.                         Break
  364.                     ElseIf (PE_Sel = 18) Then
  365.                         Goto NcS
  366.                     Endif
  367.                 Endif
  368.         End Select
  369.     EndIf
  370. EndWhile
  371. :PGend
  372. Endproc
  373. ;----------------------------------------------------------------------------
  374. Procedure PE_DispCurColor()
  375. AnsiPos 33-PE_CurCol*2,22
  376. Print PE_ColorLeftSeparator
  377. Color PE_CurCol
  378. If (PE_InMenu) Then
  379.     Print "█"
  380. Else
  381.     Print "■"
  382. Endif
  383. Print PE_ColorRightSeparator
  384. Endproc
  385. ;----------------------------------------------------------------------------
  386. Procedure PE_EraseCurColor()
  387. AnsiPos 33-PE_CurCol*2,22
  388. Print " "
  389. Color PE_CurCol
  390. Print "■"
  391. Print " "
  392. Endproc
  393. ;----------------------------------------------------------------------------
  394.